package com.tcc.etec.mecashow.bdados;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.tcc.etec.mecashow.objetos.Recorde;

public class RecordeDao {

	private SQLiteDatabase database;
	
	// Unica instancia da classe RecordeDao  
	private static RecordeDao instance;
	
	// Construtor privado, só pode ser criado dentro da classe RecordeDao
	private RecordeDao(Context context) {
		DatabaseCreator creator = new DatabaseCreator(context);
		database = creator.getDatabase();
	}
	
	// Retorna o único objeto RecordeaDao da aplicação 
	public static RecordeDao getInstance(Context context){
		if(instance == null){
			instance = new RecordeDao(context);
		}
		return instance;
	}
	
	public List<Recorde> listarRecordes() {
		List <Recorde> lista = new ArrayList<Recorde>();
		
		String sql = "SELECT ID_RECORDES, NOMEJOGADOR, PONTOS, DATA FROM TB_RECORDES ORDER BY PONTOS DESC, DATA ASC LIMIT 5";
		Cursor cursor = database.rawQuery(sql, new String[]{});
		cursor.moveToFirst();
		while (!cursor.isAfterLast()){
			Recorde recorde = new Recorde();
			recorde.setId(cursor.getInt(0));
			recorde.setNomeJogador(cursor.getString(1));
			recorde.setPontos(cursor.getInt(2));
			recorde.setData (Timestamp.valueOf(cursor.getString(3)));
			
			lista.add(recorde);
			
			cursor.moveToNext();
		}
		
		return lista; 
	}
	
	public boolean isRecorde (int pontos){
		String sql = "SELECT PONTOS FROM TB_RECORDES ORDER BY PONTOS DESC LIMIT 5";
		Cursor cursor = database.rawQuery(sql, new String []{});
		
		if(cursor.moveToLast()){
			if(cursor.getCount() < 5 || pontos > cursor.getInt(0)){
				return true; 
			} else { 
				return false;
			}
		} else {
			return true;
		}
	}
	
	public void salvarRecordes (Recorde recorde){
		ContentValues values = new ContentValues();
		values.put("NOMEJOGADOR", recorde.getNomeJogador());
		values.put("PONTOS", recorde.getPontos());
		values.put("DATA", recorde.getData().toString());
		
		database.insert("TB_RECORDES", null, values);
	}
}
